﻿/*
 * Ejemplo de Statemanager XNA 4.0
 * 
 * 100% XNA & XNACommunity- 2010
 * http://100xna.wordpress.com/
 * http://xnacommunity.codeplex.com
 * 
 */
using System;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Input;

namespace StateExample
{
    public class MainMenu : MenuState
    {
        public MainMenu(Game game)
            : base(game)
        {
            MenuItem item;

            //Añadimos las posibles opciones del menu
            item = new MenuItem("Un jugador");
            item.Activate += UnJugadorActivated;
            menu.Items.Add(item);

            item = new MenuItem("Opciones");
            item.Activate += OptionsActivated;
            menu.Items.Add(item);

            item = new MenuItem("Salir");
            item.Activate += QuitActivated;
            menu.Items.Add(item);

            tecladoActual = tecladoAnterior = Keyboard.GetState();
        }

        /// <summary>
        /// Acciones a realizar cuando se activa la opcion "Un jugador"
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="args"></param>
        public void UnJugadorActivated(object sender, EventArgs args)
        {
            //Ahora vamos a cargar los recursos del estados. Como supuestamente va
            //a tardar un poco en cargar todo, pasamos al estado que muestra 
            //la pantalla de "cargando"
            (Manager.Estados[GameStates.PlayingState] as PlayingState).Initialize(); 
            Manager.EstadoActual = GameStates.Loading;
        }


        /// <summary>
        /// Acciones a realizar cuado se activa la opcion "Opciones"
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="args"></param>
        public void OptionsActivated(object sender, EventArgs args)
        {
        }

        /// <summary>
        /// Acciones a realizar cuando se activa la opcion "Salir"
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="args"></param>
        public void QuitActivated(object sender, EventArgs args)
        {
            Game.Exit();
        }

        /// <summary>
        /// Actualizar el menu principal
        /// </summary>
        /// <param name="gameTime"></param>
        public override void Update(GameTime gameTime)
        {
            base.Update(gameTime);
        }
    }
}
